package cn.regexp.web.controller;

import cn.regexp.util.Sha1Util;
import cn.regexp.util.WeChatUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;

@RestController
public class WeChatController {
    /**
     *
     *
     * @param signature 微信加密签名
     * @param timestamp 时间戳
     * @param nonce     随机数
     * @param echostr   随机字符串
     * @return          随机字符串 或 null
     */
    @GetMapping("/weChat")
    public String weChat(String signature, String timestamp, String nonce, String echostr) {
        // 1）将 token、timestamp、nonce 三个参数进行字典序排序
        String[] arr = {WeChatUtil.TOKEN, timestamp, nonce};
        Arrays.sort(arr);

        // 2）将三个参数字符串拼接成一个字符串进行 sha1 加密
        StringBuilder sb = new StringBuilder();
        for (String item : arr) {
            sb.append(item);
        }
        String mySignature = Sha1Util.getSha1(sb.toString());

        // 3）开发者获得加密后的字符串可与 signature 对比，标识该请求来源于微信
        if (signature.equals(mySignature)) {
            System.out.println("接入成功");
            return echostr;
        }
        System.out.println("接入失败");
        return null;
    }
}
